package demo;

import java.util.Objects;

/**
 * Created with IntelliJ IDEA
 * Description:
 * User:恋恋
 * Date:2022-09-16
 * Time:15:47
 */
class Animal{
    String name="你好";
    int age=21;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        //判断那是否为空对象
       if(o==null){
           return false;
       }
       //判断两个是否指向同一个对象
       if(this==o){
           return true;
       }
       //判断是不是Animal类对象
       if (!(o instanceof Animal)){
           return false;
       }
       //通过上面的判断，因此直接返回逻辑式进行判断
       Animal animal=(Animal) o;//向下转型，比较属性值（怕会出现子类继承父类，比较父类中的成员变量）
        //注意：基本引用数据类型用equals方法比较，不能用“==”比较
        return this.name.equals(animal.name)&&this.age==animal.age;

    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Animal a1=new Animal("柯基",6);
        Animal a2=new Animal("柯基",6);
        System.out.println(a1.hashCode());
        System.out.println(a2.hashCode());

    }
}
//    int a=10;
//    int b=10;
//        System.out.println(a==b);
//                System.out.println(a1==a2);
//                System.out.println(a1.equals(a2));